EM 算法,全称 Expectation Maximization Algorithm。期望最大算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最大似然估计或极大后验概率估计。
思想
EM 算法的核心思想非常简单,分为两步:Expection-Step 和 Maximization-Step。E-Step 主要通过观察数据和现有模型来估计参数,然后用这个估计的参数值来计算上述对数似然函数的期望值;而 M-Step 是寻找似然函数最大化时对应的参数。由于算法会保证在每次迭代之后似然函数都会增加,所以函数最终会收敛。
举例
我们举两个例子来直观的感受下 EM 算法。2.1 例子 A第一个例子我们将引用 Nature Biotech 的 EM tutorial 文章中的例子。2.1.1 背景假设有两枚硬币 A 和 B,他们的随机抛掷的结果如下图所示:我们很容易估计出两枚硬币抛出正面的概率:现在我们加入隐变量,抹去每轮投掷的硬币标记:
Coin
Statistics
Coin *
5 H, 5 T
Coin *
9 H, 1 T
Coin *
8 H, 2 T
Coin *
4 H, 6 T
Coin *
7 H, 3 T
碰到这种情况,我们该如何估计 和 的值?我们多了一个隐变量 ,代表每一轮所使用的硬币,我们需要知道每一轮抛掷所使用的硬币这样才能估计 和 的值,但是估计隐变量 Z 我们又需要知道 和 的值,才能用极大似然估计法去估计出 Z。这就陷入了一个鸡生蛋和蛋生鸡的问题。其解决方法就是先随机初始化 和 ,然后用去估计 Z, 然后基于 Z 按照最大似然概率去估计新的 和 ,循环至收敛。2.1.2 计算随机初始化 和 对于第一轮来说,如果是硬币 A,得出的 5 正 5 反的概率为:;如果是硬币 B,得出的 5 正 5 反的概率为:。我们可以算出使用是硬币 A 和硬币 B 的概率分别为:
No
Coin A
Coin B
1
0.45
0.55
2
0.80
0.20
3
0.73
0.27
4
0.35
0.65
5
0.65
0.35
从期望的角度来看,对于第一轮抛掷,使用硬币 A 的概率是 0.45,使用硬币 B 的概率是 0.55。同理其他轮。这一步我们实际上是估计出了 Z 的概率分布,这部就是 E-Step。结合硬币 A 的概率和上一张投掷结果,我们利用期望可以求出硬币 A 和硬币 B 的贡献。以第二轮硬币 A 为例子,计算方式为:于是我们可以得到:
[1]《机器学习》周志华 [2] https://www.zhihu.com/question/27976634 [3] https://blog.csdn.net/zouxy09/article/details/8537620 [4] Do, C. B., & Batzoglou, S. (2008). What is the expectation maximization algorithm?. Nature biotechnology, 26(8), 897.